//
//  TxyxSDK.h
//
//  Copyright © . All rights reserved.
//

#import <UIKit/UIKit.h>
#import "TXOrderInfo.h"     // 订单模型类
#import "TXRoleInfo.h"      // 游戏角色模型类
#import "TXUtilsFactory.h"  // 附加功能类

typedef void(^CompletionBlock)(NSDictionary *resultDic);

/**
 * SDK基础功能类
 */
@interface TxyxSDK : NSObject

/**
 *  注销回调(SDK内注销回调、clickLoginOut接口回调)
 *  注： 1、悬浮球页面注销，点击按钮触发，触发即代表注销成功；方法需要先执行(参照demo)；
 *      2、调用 [[TxyxSDK sharedInstance] clickLoginOut]; 也会触发此回调；
 */
@property (nonatomic, copy,setter=setExitLogin:) CompletionBlock exitLogin;

/**
 *  创建单例服务
 *
 *  @return 返回单例对象
 */
+ (instancetype)sharedInstance;

/**
 *  初始化方法,在应用didFinishLaunchingWithOptions中调用(必接)
 *  请求地址 传https://www.xxxx.com，传空字符串或者nil，会使用TxyxSDK.bundle里面txgameinfo.plist文件的requestURL
 */
- (BOOL)initApi:(UIApplication *)application urlPre:(NSString *)urlPre didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

/**
 *  登录接口
 *  @param completion     登录结果回调Block
 *  注：loginresult 为1，代表登录成功；其他失败
 */
- (void)addLoginView:(CompletionBlock)completion;

/**
 *  注销接口
 *  回调结果同 [[TxyxSDK sharedInstance] setExitLogin:] 方法 ，
 */
- (void)clickLoginOut;

/**
 *  支付接口
 *  @param orderStr			订单信息(具体参照demo)
 *  @param completionBlock	交换结果回调Block
 */
- (void)exchange:(TXOrderInfo *)orderStr completionBlock:(CompletionBlock)completionBlock;

/**
 *  上传(更新)角色信息接口
 *  @param roleInfo		角色信息(具体参照demo)
 *  @param resultDict	上传结果回调Block
 *  注：玩家选择完区服信息调用；更新角色信息再次调用
 */
- (void)uploadRoleInfo:(TXRoleInfo *)roleInfo completionBlock:(void(^)(NSDictionary *resultDict))resultDict;

/**
 *  用于微信QQ登录和支付回调(必接)
 */
- (void)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

/**
 *  用于微信QQ登录和支付回调(必接)
 */
- (void)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options;

/**
 *  主要用于支付回调(必接)
 */
- (void)application:(UIApplication *)application handleOpenURL:(NSURL *)url;



@end









